$(function () {
    // 需求1:添加文章分类列表
    //因为添加,修改,删除后要重新渲染表格,所以封装成一个函数
    // 调用函数
    let layer = layui.layer
    initArtCaseList()
    //封装函数
    function initArtCaseList() {
        axios({
            method: 'GET',
            url: '/my/article/cates',

        }).then(res => {
            // console.log(res)
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            //成功后直接渲染
            let arr = []
            // 遍历返回的数据
            res.data.data.forEach(function (ele) {
                arr.push(`
                    <tr>
                            <td>${ele.Id}</td>
                            <td>${ele.name}</td>
                            <td>${ele.alias}</td>
                            <td>
                                <button data-id="${ele.Id}" class="btn-edit layui-btn layui-btn-xs ">编辑</button>
                                <button data-id="${ele.Id}" class="del-edit layui-btn layui-btn-xs layui-btn-danger">删除</button>

                            </td>
                    </tr>
                `)
            })
            // 循环之外,进行赋值
            $('tbody').empty().html(arr.join(""))
        })
    }


    // 需求2:点击按钮,弹出添加类别对话框
    //定义一个全局变量,接收open()的索引值,将来用于关闭对话框
    let indexAdd = 0
    $('#addBtn').on('click', function () {
        indexAdd = layer.open({
            type: 1,
            title: '添加文章类别',
            area: ['500px', '260px'],
            // 将来content里面要放form表单,所以放到最末尾
            // html中构建完成form 准确率高
            content: `
            <form id="addForm" class="layui-form" action="">
            <div class="layui-form-item">
                <label class="layui-form-label">分类名称</label>
                <div class="layui-input-block">
                    <input type="text" name="name" required lay-verify="required" placeholder="请输入分类名称" autocomplete="off"
                        class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">分类别名</label>
                <div class="layui-input-block">
                    <input type="text" name="alias" required lay-verify="required" placeholder="请输入分类别名" autocomplete="off"
                        class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
    
                <div class="layui-input-block">
                    <button class="layui-btn" lay-submit lay-filter="formDemo">确认添加</button>
                    <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                </div>
            </div>
        </form>
            `
        });
    })


    // 需求3. 添加文章分类 --后添加的动态元素,需要使用事件委托
    $('body').on('submit', '#addForm', function (e) {
        e.preventDefault()
        axios({
            method: 'POST',
            url: '/my/article/addcates',
            data: $(this).serialize()
        }).then(res => {
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            layer.msg("恭喜您,添加文章分类成功")
            // 重新渲染表格
            initArtCaseList()
            // 关闭对话框
            layer.close(indexAdd)
        })
    })


    // 需求4. 修改分类弹出框

    let indexEdit = 0
    $('tbody').on('click', '.btn-edit', function () {
        // 点击编辑按钮,要做的两件事 1.弹出层 2.赋值
        // 弹出层
        indexEdit = layer.open({
            type: 1,
            title: '修改文章类别',
            area: ['500px', '260px'],
            // 将来content里面要放form表单,所以放到最末尾
            // html中构建完成form 准确率高
            content: `
            <form id="editForm" class="layui-form" lay-filter="editform">
            <!-- 隐藏域,填充Id值,将来修改数据用 -->
            <input type="hidden" name="Id">
            <div class="layui-form-item">
                <label class="layui-form-label">分类名称</label>
                <div class="layui-input-block">
                    <input type="text" name="name" required lay-verify="required" placeholder="请输入分类名称" autocomplete="off"
                        class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">分类别名</label>
                <div class="layui-input-block">
                    <input type="text" name="alias" required lay-verify="required" placeholder="请输入分类别名" autocomplete="off"
                        class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
    
                <div class="layui-input-block">
                    <button class="layui-btn" lay-submit lay-filter="formDemo">确认修改</button>
                    <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                </div>
            </div>
        </form>
            `
        });
        // 赋值
        //获取数据 和渲染数据 要写到.btn-edit的点击事件里面
        let index = $(this).attr('data-id')
        // 发送ajsx 
        axios({
            method: 'GET',
            // id 动态参数(路由参数)
            //特点:  /不能省略    :一定要去掉    id是动态变化的
            url: '/my/article/cates/' + index,

        }).then(res => {
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            // 成功后渲染    layui.form.val()
            layui.form.val("editform", res.data.data)

        })

    })


    // 需求5. 修改文章分类 
    $('body').on('submit', '#editForm', function (e) {
        e.preventDefault()
        // 修改分类
        axios({
            method: 'POST',
            url: '/my/article/updatecate',
            data: $(this).serialize()
        }).then(res => {
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            layer.msg("恭喜您,修改文章分类成功")
            // 重新渲染表格
            initArtCaseList()
            // 关闭对话框
            layer.close(indexEdit)
        })
    })

    // 需求6:删除
    $('tbody').on('click', '.del-edit', function () {
        // 获取自定义属性值,一定要在弹窗外面
        let id = $(this).attr('data-id')
        // 弹窗
        layer.confirm('确认删除吗?', { icon: 3, title: '提示' }, function (index) {
            //do something
            axios({
                method: 'GET',
                // /必须保留 :必须删除
                url: '/my/article/deletecate/' + id
            }).then(res => {
                if (res.data.status !== 0) {
                    return layer.msg(res.data.message)
                }
                // 成功提示 初始化文章分类列表
                layer.msg("恭喜您,删除成功")
                initArtCaseList()
            })
            // 关闭询问框
            layer.close(index);
        });


    })



})